package com.wtc.codeblock;

public class CodeBlockDeatil01 {
    public static void main(String[] args) {
        //类被加载的情况举例
        //1.创建对象实例时（new）
//        AA aa = new AA();
        //2.创建子类对象实例，父类也会被加载且父类先被加载，子类后被加载。
//        AA aa1 = new AA();
        //使用类的静态成员时（静态属性，静态方法）
//        System.out.println(Cat.n);
        //static代码块，是在类加载时，执行的，而且只会执行一次。
//        DD dd = new DD();
//        DD dd1 = new DD();
        //普通的代码块，在创建对象实例时，会被隐式的调用。被创建一次，就会调用一次。如果只是使用类的
        // 静态成员时，普通代码块不会执行
        System.out.println(DD.n1);
    }
}
class DD {
    public static int n1 = 1000;
    static {
        System.out.println("DD的静态代码块被执行！");
    }
    {
        System.out.println("DD的普通代码块被执行！");
    }
}
class Cat {
    public static int n = 111;
    static {
        System.out.println("Cat的静态代码块被执行！");
    }
}
class BB {
    static {
        System.out.println("BB的静态代码块被执行！");
    }
}
class AA extends BB {
    static {
        System.out.println("AA的静态代码块被执行！");
    }
}
